#!/bin/bash
# 自动安装 directory_backup.sh 并设置 crontab 定时任务

# 检查是否为 root 用户
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用 sudo 运行此脚本！"
    exit 1
fi

# 定义备份脚本路径
SCRIPT_PATH="/usr/local/bin/directory_backup.sh"

# 1. 创建备份脚本
cat > "$SCRIPT_PATH" << 'EOF'
#!/bin/bash
# 目录备份脚本，保留最新的2个备份

# 要备份的目录（请修改为实际需要备份的目录）
TARGET_DIR="/mnt/mydisk/docker_data/docker-data/"
# 备份文件存放目录
BACKUP_DIR="/mnt/mydisk/docker_data/"
# 备份文件前缀
BACKUP_PREFIX="homeserver_backup"

# 确保备份目录存在
mkdir -p "$BACKUP_DIR"

# 生成带日期的备份文件名
BACKUP_FILE="$BACKUP_DIR/${BACKUP_PREFIX}_$(date +%Y%m%d_%H%M%S).tar.gz"

# 复制docker-compose文件
cp "$BACKUP_DIR/docker-compose.yaml" "$TARGET_DIR/docker-compose.yaml"

# 执行备份（包含隐藏文件）
tar -czf "$BACKUP_FILE" -C "$(dirname "$TARGET_DIR")" "$(basename "$TARGET_DIR")"

echo "备份已完成: $BACKUP_FILE"

# 清理旧的备份文件（保留最新的2个）
cd "$BACKUP_DIR" || exit
ls -t ${BACKUP_PREFIX}_*.tar.gz 2>/dev/null | tail -n +3 | xargs -r rm -f
EOF

# 2. 赋予执行权限
chmod +x "$SCRIPT_PATH"
echo "已创建脚本: $SCRIPT_PATH"

# 3. 添加 crontab 任务（每天凌晨2点执行）
CRON_JOB="0 2 * * * $SCRIPT_PATH"
(crontab -l 2>/dev/null | grep -v -F "$SCRIPT_PATH"; echo "$CRON_JOB") | crontab -
echo "已添加 crontab 任务: $CRON_JOB"

# 4. 验证 crontab
echo "当前 crontab 任务列表:"
crontab -l

echo "安装完成！脚本将在每天凌晨2点自动执行。"
echo "请编辑 $SCRIPT_PATH 修改 TARGET_DIR 和 BACKUP_DIR 为实际路径。"